define(function () {

  /**
   * 打印窗口相关参数信息
   */
  function printWindowInfo() {
    console.log("屏幕窗口宽/高:" + window.innerWidth + "*" + window.innerHeight);
    console.log(" 网页可见区域宽：" + document.body.clientWidth);
    console.log(" 网页可见区域高：" + document.body.clientHeight);
    console.log(" 网页可见区域宽(包括边线和滚动条的宽)：" + document.body.offsetWidth);
    console.log(" 网页可见区域高(包括边线的宽)：" + document.body.offsetHeight);
    console.log(" 网页正文全文宽：" + document.body.scrollWidth);
    console.log(" 网页正文全文高：" + document.body.scrollHeight);
    console.log(" 网页被卷去的高(ff)：" + document.body.scrollTop);
    console.log(" 网页被卷去的高(ie)：" + document.documentElement.scrollTop);
    console.log(" 网页被卷去的左：" + document.body.scrollLeft);
    console.log(" 网页正文部分上：" + window.screenTop);
    console.log(" 网页正文部分左：" + window.screenLeft);
    console.log(" 屏幕分辨率的高：" + window.screen.height);
    console.log(" 屏幕分辨率的宽：" + window.screen.width);
    console.log(" 屏幕可用工作区高度：" + window.screen.availHeight);
    console.log(" 屏幕可用工作区宽度：" + window.screen.availWidth);
    console.log(" 你的屏幕设置是 " + window.screen.colorDepth + " 位彩色");
    console.log(" 你的屏幕设置 " + window.screen.deviceXDPI + " 像素/英寸");
  }

  /**
   *  文档内容实际高度（包括超出视窗的溢出部分）
   */
  function getRealHeight() {
    return Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
  }
  /**
   * 判断网页内容是否超过窗口高度
   */
  function isBodyHeightOverflow() {
    return Math.max(document.documentElement.scrollHeight, document.body.scrollHeight) > window.innerHeight;
  }
  /**
   * 窗口滚动监听
   * @param {function} callback 回调方法
   */
  function onScrollDownListener(callback) {
    window.onscroll = function () {
      //文档内容实际高度（包括超出视窗的溢出部分）
      let scrollHeight = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
      //滚动条滚动距离(加0.5解决精度问题)
      let scrollTop = (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop) + 0.5;
      //窗口可视范围高度
      let clientHeight = window.innerHeight || Math.min(document.documentElement.clientHeight, document.body.clientHeight);
      callback(clientHeight + scrollTop >= scrollHeight);
    }
  }
  /**
   * 滚动顶部
   * 参考：https://juejin.cn/post/6844903828492386317
   */
  function scrollToTop() {
    window.scrollTo({
      left: 0,
      top: 0,
      behavior: 'smooth'
    })
  }
 /**
   * 触摸滑动到底部的监听，主要用于网页高度固定100%，滑动监听
   * @param  el  元素对象
   * @param  bottomOffset 底部偏移距离，用于底部存在菜单ui,即菜单的高度
   * @param  delay  延时触发
   * @param  callback 回调函数
   */
  let loadMoreTimer;

  function onTouchScrollDownListener(el, bottomOffset, delay, callback) {
    el.addEventListener("touchend", function () {
      if (loadMoreTimer) clearTimeout(loadMoreTimer);
      timer = setTimeout(() => {
        let rect = el.getBoundingClientRect();
        let isBottom = rect.bottom <= document.body.clientHeight - bottomOffset;
        if (callback) {
          callback(isBottom);
        }
      }, delay)
    }, false);
  }

  return {
    printWindowInfo: printWindowInfo,
    getRealHeight: getRealHeight,
    isBodyHeightOverflow: isBodyHeightOverflow,
    onScrollDownListener: onScrollDownListener,
    scrollToTop: scrollToTop,
    onTouchScrollDownListener: onTouchScrollDownListener,
  }
});